Skip to content

webpack 的三种 hash、chunkHash、contentHash 有什么区别

  • 文件输出名后缀, 结合 CDN 缓存使用,通过更改 hash 来触发文件更新缓存

hash

  • hash 每次 webpack 构建生成唯一一个 hash, 修改任意文件都会修改 hash

chunkHash

  • 同的入口文件(Entry)进行依赖文件解析、构建对应的 chunk, 根据 chunk 生成 hash 值, 来源于同一个 chunk,则 hash 值就一样, 我们在生产环境里把一些公共库和程序入口文件区分开,单独打包构建, 只要我们不改动公共库的代码,就可以保证其哈希值不会受影响
  • 问题:js 引用 css,编译后他们的 hash 是相同的,只要 js 变化,css 也就发生变化

contentHash

  • contentHash 根据内容生成 hash 值,文件内容相同 hash 值就相同, css 所处模块中,只要 css 内容不发生变化, hash 就不变化
js
  output:{
    path:path.resolve(__dirname,'dist'),
    filename:'[name].[chunkhash].js'
  },
  plugins: [
    new MiniCssExtractPlugin({
     filename: "[name].[contenthash].css"
    })
  ],

在 MIT 许可下发布